package a

import (
	"encoding/json"
	"fmt"

	"gorm.io/datatypes"
)

// func A合并对象(dst, src any) (any, error) {
// 	dstJSON, err := json.Marshal(dst)
// 	srcJSON, err := json.Marshal(src)

// 	var dstMap map[string]interface{}
// 	err = json.Unmarshal(dstJSON, &dstMap)

// 	var srcMap map[string]interface{}
// 	err = json.Unmarshal(srcJSON, &srcMap)

// 	for key, value := range srcMap {
// 		dstMap[key] = value
// 	}

// 	// 将合并后的 map 转换为 JSON 字节切片
// 	mergedJSON, err := json.Marshal(dstMap)

// 	var mergedMap map[string]interface{}
// 	err = json.Unmarshal(mergedJSON, &mergedMap)

// 	return mergedMap, nil
// }

func A解数组包对象(源str datatypes.JSON) (res []map[string]string) {
	err := json.Unmarshal([]byte(源str), &res)
	if err != nil {
		fmt.Printf("解析 JSON 数据时出错: %v\n", err)
		return
	}
	// 检查切片是否为空
	if len(res) > 0 {
		// 取出第一个元素
		// firstCandidate := candidates[0]
		// fmt.Printf("第一个候选值是: %s\n", firstCandidate)
	} else {
		fmt.Println("候选值列表为空")
	}
	return
}

func A解数组_any(源str datatypes.JSON) (res []any) {
	// 解析 JSON 数据
	err := json.Unmarshal([]byte(源str), &res)
	if err != nil {
		fmt.Printf("解析 JSON 数据时出错: %v\n", err)
		return
	}
	return
}

func A解数组(源str datatypes.JSON) (res []string) {
	// 解析 JSON 数据
	err := json.Unmarshal([]byte(源str), &res)
	if err != nil {
		fmt.Printf("解析 JSON 数据时出错: %v\n", err)
		return
	}
	// 检查切片是否为空
	if len(res) > 0 {
		// 取出第一个元素
		// firstCandidate := candidates[0]
		// fmt.Printf("第一个候选值是: %s\n", firstCandidate)
	} else {
		fmt.Println("候选值列表为空")
	}
	return
}

func A解对象(源str datatypes.JSON) (res map[string]string) {
	res = make(map[string]string)
	json.Unmarshal([]byte(源str), &res)
	return
}
